#!/usr/bin/env bash

# ----------------------------------------------------------------------
# Filename	:  ipcMylib_test
# Version	:  1.0
# Date		:  2023/12/04
# Author	:  yaoxiyao
# Email		:  yaoxiyao@kylinos.com.cn 
# History	:     
#              Version 1.0, 2023/12/04
# Function	:  宜提供非文件形式的内存动态函数库调用接口，以满足敏感内存动态库的非文件形式调用需求
# Out		:        
#              0 => TPASS
#              1 => TFAIL
#              other=> TCONF
# ----------------------------------------------------------------------

# 测试主题
Title_Env_LTFLIB="宜提供非文件形式的内存动态函数库调用接口，以满足敏感内存动态库的非文件形式调用需求"

# 目标文件
IpcMylibFile="ipcMylib_test.c"
IpcMylibOrderFile="ipcMylib_test"
MylibFile="mylib.c"
MylibOrderFile="libmylib.so"

## TODO : 个性化,初始化
#   Out : 0=>TPASS
#         1=>TFAIL
#         2=>TCONF
TestInit_LTFLIB(){
        cp ${KERNEL_SRC_DIR_KERNEL}/${IpcMylibFile} ${TmpTestDir_LTFLIB}
        CommRetParse_FailDiy_LTFLIB ${ERROR} "复制文件失败${KERNEL_SRC_DIR_KERNEL}/${IpcMylibFile}"
        cp ${KERNEL_SRC_DIR_KERNEL}/${MylibFile} ${TmpTestDir_LTFLIB}
        CommRetParse_FailDiy_LTFLIB ${ERROR} "复制文件失败${KERNEL_SRC_DIR_KERNEL}/${MylibFile}"
	return $TPASS
}


## TODO : 清理函数
#   Out : 0=>TPASS
#         1=>TFAIL
#         2=>TCONF
TestClean_LTFLIB(){
        Debug_LLE "rm -rf ${TmpTestDir_LTFLIB}/${IpcMylibFile} ${TmpTestDir_LTFLIB}/${MylibFile}"
	rm -rf ${TmpTestDir_LTFLIB}/${IpcMylibFile} ${TmpTestDir_LTFLIB}/${MylibFile}
        return $TPASS
}


## TODO : 测试用例集
#   Out : 0=>TPASS
#         1=>TFAIL
#         2=>TCONF
Testsuite_LTFLIB(){
        testcase_1
        return $TPASS
}


## TODO ： 宜提供非文件形式的内存动态函数库调用接口，以满足敏感内存动态库的非文件形式调用需求
#
testcase_1(){
        cd ${TmpTestDir_LTFLIB}
        CommRetParse_LTFLIB "成功进入临时目录${TmpTestDir_LTFLIB}"

        gcc ${IpcMylibFile} -o ${IpcMylibOrderFile} -ldl
        CommRetParse_LTFLIB "成功编译文件${IpcMylibFile}"

        chmod 777 ${IpcMylibOrderFile}
        CommRetParse_LTFLIB "成功赋权文件${IpcMylibOrderFile}"

        gcc -fPIC -shared -o ${MylibOrderFile} ${MylibFile}
        CommRetParse_LTFLIB "成功编译文件${MylibFile}"

        local result_code=`./${IpcMylibOrderFile} |grep "result" |awk -F ": " '{print $2}'`
        local result_flag="100"
        [ "Z${result_code}" == "Z${result_flag}" ]
        CommRetParse_LTFLIB "成功支持非文件形式的内存动态函数库调用接口"
}


#----------------------------------------------#

source "${LIB_LTFLIB}"
Main_LTFLIB $@
